package com.spring.controller;

import com.spring.pojo.JsonResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @RestControllerAdvice 此注解描述的类
 * 为spring mvc中的全局异常处理类，
 * controller中抛出的异常，假如在内部没有
 * 处理则可以交给此类来处理。
 * 这个类中可以定义多个异常处理方法，
 * 每个异常处理方法都可以指定它能处理的异常类型。
 */
@RestControllerAdvice
public class GlobalExceptionHandler {

    private static final Logger log=
            LoggerFactory.getLogger(GlobalExceptionHandler.class);
    /**
     * @ExceptionHandler注解描述的方法为异常处理方法，注解内部可以定义异常处理类型。
     * @param exception
     * @return
     */
    @ExceptionHandler(RuntimeException.class)
    public JsonResult doHandleRuntimeException(RuntimeException exception){
         exception.printStackTrace();
         log.error(exception.getMessage());
         //封装异常信息
         return new JsonResult(exception);
    }
    //.....
}
